Top 10k strings from CP-M Plus v1.0 (1988)(Locomotive Software)(Side B).dsk
in <root> / bin / z80 / software / Sinclair Spectrum Collection TOSEC.exe / Sinclair ZX Spectrum - Utilities & Educational / Sinclair ZX Spectrum - Utilities & Educational - [DSK] (TOSEC-v2007-01-01) /
Back to the directory listing
27 Track-Info 20 ALL OTHER REGISTERS PRESERVED 14 ;========= 8 A = CP/M RETURN CODE 7 CARRY TRUE 6 CP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH151282 6 B = DRIVE 6 ;========== 5 OTHER FLAGS BC DE HL IX IY CORRUPT 5 IX = ADDRESS OF DPB 4 CARRY FALSE 4 B, SERIALCONTROL 4 AF BC DE HL CORRUPT 4 ;IN A, (C) 4 ;=========== 3 `i^#V#~#fo 3 SVCDEALLOCATE 3 NO CONDITIONS 3 HL = TRACK 3 FIDCOSTATUS 3 DE = LOGICAL SECTOR 3 CARRY TRUE (=> OK) 3 BC = USART CONTROL PORT 3 @10FINDSECTOR 3 @10CDSABAUD 3 ;EXIT IF ERROR 3 #01 => NON-RECOVERABLE ERROR 2 hhhhhhhhhhhhhh 2 WARNING: Cannot redirect from BIOS 2 UNBALANCED MACRO LIB 2 Traceback: 2 SYSOUT $$$ 2 SYSIN SUB 2 SVCMAXALLOCATE 2 SOURCE FILE READ ERROR 2 SOURCE FILE NAME ERROR 2 OUTPUT FILE WRITE ERROR 2 OTHER FLAGS CORRUPT 2 OTHER FLAGS A BC DE IX IY CORRUPT 2 OTHER FLAGS A BC DE HL CORRUPT 2 NZZ NCC POPEP M 2 NO SOURCE FILE PRESENT 2 NO DIRECTORY SPACE 2 L = TX DATA BITS 5..8 2 Invalid I/O List 2 Insufficient Memory$ 2 INVALID PARAMETER: 2 INITDIR COM 2 H, @60FIDEMS 2 H USE FACTOR 2 H = RX DATA BITS 5..8 2 Free Space Overwrite$G 2 FREE Request Out-of-Range$ 2 FINDSECTOR 2 FIDHEADER: 2 FIDCOUTPUT 2 END OF ASSEMBLY 2 E = PARITY 0 => NONE, 1 => ODD, 2 => EVEN 2 DEVTABBAUD 2 DE = FID ENVIRONMENT 2 DE = ADDRESS OF DEVICE TABLE ENTRY 2 D = STOP BITS 0 => 1, 1 => 1.5, 2 => 2 2 Condition Stack Overflow$4Ox 2 COPYRIGHT (C) 1980 DIGITAL RESEARCH 2 CDSAPARAMS 2 CARRY FALSE, ZERO FALSE (=> ERROR, NO RETRY) 2 CANNOT CLOSE FILES 2 BASIC FIDCSUM 2 B, SERIALDATA 2 A = CHARACTER 2 @60FIDEMS: 2 @50FIDEMS: 2 @40FIDEMS: 2 @30FIDEMS: 2 @30CDSAINIT 2 @20FIDEMS: 2 @10FIDEMS: 2 ;VERSION NUMBER IN BCD 2 ;VERSION NUMBER 2 ;JUMP IF MAJOR VERSION NOT RECOGNISED 2 ;EXIT IF NOT READY 2 ;ELSE OUTPUT WILL BE POSSIBLE 2 ;E = CONTROL BYTE SO FAR 2 ;DIRECTORY BLOCK MAP 2 ;CAN START ANYWHERE 2 ;BYTES TO MOVE 2 ;ADDRESS OF SCB 2 ; Z80 INSTRUCTIONS 2 ; WRITTEN BY LOCOMOTIVE SOFTWARE (JUNE 1988) 2 ; VARIABLES 2 ; THIS TRICK RELIES ON $=0100 AND AVOIDS HAVING TO HAVE TWO SOURCE FILES. 2 ; STRICTLY, ONE SHOULD LINK IN ANOTHER .REL FILE WITH THE SVC DEFINITIONS. 2 ; STANDARD 32 BYTE FID HEADER 2 ; JUMPBLOCK 2 ; EARLY MORNING START 2 ; DEFINITIONS 2 ; =========== 2 ; ========= 2 0,0,0,0,0,0,0,0,0,0,0,0 ;RESERVED 2 0!0$0'0*0-000306090<0?0B0E0H0K0N0Q0T0W0Z0]0`0c0f0i0l0o0r0u0x0{0~0 2 +F+N+V+5^{ 2 *Track-Info 2 'SPECTRUM' 2 ' installed', 0DH, 0AH, 0FFH 2 $ + 0FE03H 2 ZERO DIVIDE 2 UNDERFLOW 2 UNDEFINED FILE 2 FIXED OVERFLOW 2 END OF FILE 1 ~+"X0*M0+"M0w 1 ~#N#F#w#q#p 1 }2C1:C1!A1 1 }2=1:=1!91 1 {FGHIJKLMNOPQRSTU 1 z/0123456789:;<=> 1 w:6<<26<:4<<24< 1 w:5<<25<:6<<26< 1 w!HG"Track-Info 1 u(*\C#"\C!ZC6 1 total "disc" size = 12K 1 symbol table reference overflow 1 symbol table overflow 1 sector size 1 record size 1 r< Free Space Exhausted 1 q:pm#w#"\m 1 q#p:6<<26< 1 pSTSERIAL #221 1 no SYM file 1 no PRN file 1 lXRF.XRF make error 1 jlmnopqrstuvwxy 1 invalid SYM file format 1 h,*p9"A::\: 1 h record(s) written. 1 gital Research, Inc. All Rights Reserved 1 entry symbol $select common block $program name $request $error 4 $define common size $chain external $define entry point $error 8 $external + offset $define data size $set program counter $chain address $define program size $end program $end file$F 1 each "track" is 1 sector 1 directory size 1 d5*d:"1>!_:6 1 d$PlPRINTER busy 1 block size 1 `i"j>*h>"f> 1 ^Track-Info 1 ^ :_:/2^::{9 1 ^ :_:/2^::!:!_: 1 \VWXYZ[\]^_`a 1 []=, :;<>%\|"()/#!@&+-*? 1 YYPROG $$$ 1 YYDATA $$$ 1 YYCOMM $$$ 1 YYABS $$$ 1 XXPROG $$$ 1 XXDATA $$$ 1 XXCOMM $$$ 1 XXABS $$$ 1 XREF COM 1 WARNING: Patches greater than $ 1 Valid patch numbers: 1-32$ 1 Valid file types: COM or PRL$ 1 VERS: 3.00 1 Unrecognized option. 1 UNDEFINED SYMBOLS: 1 Total file size exceeds 64K. 1 This program will not run in this environment 1 This file was not used. 1 There are not enough available RSX slots. 1 TYPE HISTOGRAM BOUNDS 1 TRACE UTL 1 TEMP $$$ 1 Sun$Mon$Tue$Wed$Thu$Fri$Sat$ 1 Strike key to set time$ 1 Stream/Record 1 Sequen/Direct 1 SYSIN $$$Getting console input from $INPUT~FROM~FILE~STATUS~CONDITIONAL~FALSE~TRUE~CONSOLE~CONIN:~AUXILIARY~AUXIN:~END~CON:~AUX:~NOT~ECHO~FILTERED~SYSTEM~PROGRAM 1 SYMBOL TABLE OVERFLOW 1 STSERIALCOM 1 SPECTRUMFID 1 SID COM 1 SERIALDATA 1 SERIALCONTROL 1 SERIAL v1.0 installed 1 SERIAL not installed 1 SERIAL left unchanged 1 SERIAL FID 1 SERIAL ASM 1 SAVE COM 1 Requires CP/M 3 or higher. 1 RMAC SERIAL 1 RMAC RAMDISC 1 RMAC COM 1 REN SERIAL.FID=SERIAL.PRL 1 REN RAMDISC.FID=RAMDISC.PRL 1 REL $$$ 1 READY FOR SYMBOLIC BACKTRACE 1 RAMDISC ASM 1 R100 REM FIDCSUM.BAS 1 Q"Q'Q,Q1Q6a<aBaX0" 1 Q"Q'Q,Q1Q6a<aBaHa 1 Press any key to set time $ 1 Patch not installed$ 1 Patch installed$ 1 Patch $None$ for $ 1 PUT ERROR: FILE ERASED 1 PUT COM 1 PRNXRFABORTED. 1 POLLS "DATA AVAILABLE" 1 PATCH VERSION3.0 PATCH.COM 1 PATCH COM 1 Not enough available memory. 1 No time stamps present. 1 No more RSX files to be used. 1 No modifier for this option. 1 No header or RSXs to strip. 1 No directory space. 1 NULL0LOADER0SCB 1 NEXT MSZE PC END 1 Missing right parenthesis. 1 Missing left parenthesis. 1 Missing SCB value. 1 Media change occurred. 1 MXList WAITING FOR PRINTER 1 MV - CPC format Disk Image (DU54) 1 MODULE TOP $UNDEFINED START SYMBOL: $YY???? $$$XX???? $$$RQST$ 1 MEMORY OVERFLOW, USE [A] SWITCH$INSUFFICIENT MEMORY$OVERLAPPING SEGMENTS$ 1 MAC COM 1 M, '0' - 1 1 Later CP/M or MP/M Version Required$*#= 1 Later CP/M or MP/M Version Required$* 1 LINK SERIAL [OP] 1 LINK RAMDISC [OP] 1 LINK COM 1 LIB COM 1 L = ENCODED TX BAUDRATE 1 Keyed Access P 1 Invalid file name. 1 Invalid drive error. 1 Invalid SCB offset 1 Invalid RSX type. 1 Invalid FCB. 1 Input/Output 1 Ignoring rest of line: $ 1 IY = ADDRESS OF SOURCE/DESTINATION 1 IY = ADDRESS OF SOURCE 1 IY = ADDRESS OF DESTINATION 1 IX = ADDRETrack-Info 1 IRL $$$ 1 INITIAL = 1 INITDIR WILL ACTIVATE TIME STAMPS FOR SPECIFIED DRIVE.1Do you want to re-format the directory on drive: Do you want the existing time stamps cleared0Do you want to recover time/date directory space (Y/N)? YyABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzEnd of PASS 1. ERROR: INITDIR TERMINATED. Requires CP/M 3.0 or higher. Directory already re-formatted.Not enough room in directory. Wrong password. 1 INDEX ERROR$NO MODULE: $SYNTAX ERROR$ 1 INDEX ERROR$MULTIPLE DEFINITION: $MAIN MODULE ERROR$FIRST COMMON NOT LARGEST$COMMON ERROR$UNRECOGNIZED ITEM 1 IF READY TO OUTPUT 1 IF NOT READY 1 IF NO CHARACTER AVAILABLE 1 IF CHARACTER AVAILABLE 1 IF +SELECTOR #80..#FF => COMMAND 1 IF +SELECTOR #00..#7F => MODE CHANGE 1 HL = SIGN-ON MESSAGE 1 HL = ERROR MESSAGE 1 HL = ADDRESS OF SIGN-ON MESSAGE 1 HL = ADDRESS OF SECTOR 1 HL = ADDRESS OF ERROR MESSAGE 1 HISTOGRAM: 1 HIST UTL 1 HEXCOM COM 1 H, @80FIDEMS 1 H, @70FIDEMS 1 H, @50FIDEMS 1 H, @40FIDEMS 1 H, @10FIDDLOGON 1 H = ENCODED RX BAUDRATE 1 GET COM 1 GENCOM completed. 1 GENCOM COM 1 G:/{Ox*9C# 1 F{ Invalid Format Item 1 First submitted file must be a COM file. 1 File not found. 1 FOR OUTPUT POLLS FOR "TX ALL SENT" AND DSR 1 FOR OUTPUT POLLS "TX BUFFER EMPTY" 1 FOR INPUT RAISES DTR 1 FOR INPUT POLLS "DATA AVAILABLE" 1 FINDSECTOR: 1 FIDDWRITE: 1 FIDDLOGON: 1 FIDDFLUSH: 1 FIDCSUM BAS 1 FIDCOUTPUT: 1 FIDCOSTATUS: 1 FIDCISTATUS: 1 FIDCISTATUS 1 FIDCINPUT: 1 F HL CORRUPT 1 F BC DE HL CORRUPT 1 Error on copy. 1 Error at the '^': $Error at end of line: $Invalid option or modifier$End of line expected$Invalid file specification$Invalid command$Invalid delimiter$File not found$Enter Password: $file: $SUBMIT of $GET from $ stopped$console$GET from $ stopped$console$Requires CP/M 3.0$CP/M 3 GET Version 3.0 1 Error at the '^': $Error at end of line: $Invalid option or modifier$End of line expected$Invalid file specification$Invalid command$Invalid delimiter$File is Read Only$ (Y/N)? $PUT aborted$Enter Password: $Putting $list$console$ input to $ output to $file: $ 1 Enter today's date (MM/DD/YY): $ 1 Enter the time (HH:MM:SS): $ 1 Enter file: $1$ 1 Enter file (type RETURN to exit): $ 1 Enter Password: $ 1 Enter File: $ 1 Ending hex address $ 1 End of Execution$(C 1 End of Execution$ 1 ERROR: You cannot PUT INPUT to a file 1 ERROR: No disk space.$ 1 ERROR: No directory space.$ 1 ERROR: Insufficient Memory 1 ERROR: Bad close.$ 1 ERROR: Auxiliary device redirection not implemented 1 ERROR: $PATCH requires CP/M 3$Invalid file type: .$Serial number mismatch$No file: $False password: $Invalid patch number: $Drive $ is R/O$ on $Illegal drive: $ 1 ERROR: $DISK READ$LOAD ADDRESS LESS THAN 100$DISK WRITE$LOAD ADDRESS $ERROR ADDRESS $INVALID HEX DIGIT$CHECKSUM ERROR $FIRST ADDRESS $LAST ADDRESS $BYTES READ $RECORDS WRITTEN $CANNOT OPEN SOURCE FILE$DIRECTORY FULL$CANNOT CLOSE FILE$HEXCOM 1 ERROR: Requires CP/M3.$ERROR: Illegal time/date specification.$1_ 1 ERROR - FORM IS X,Y 1 EI SPHLDI XCHGPCHLXTHLRET HLT CMC STC CMA DAA RAR RAL RRC RLC NOP CPI ORI XRI ANI SBI IN SUI OUT ACI ADI CALLJMP LDA STA LHLDSHLDMOV ADD ADC SUB SBB ANA XRA ORA CMP INR DCR MVI LXI STAXINX DAD LDAXDCX RST PSW POP PUSHNZZ NCC POPEP M B C D E H L M A B D H SP PSW ??= SUB 1 Duplicate input RSX... 1 Duplicate RSX in header. Replacing old by new. 1 Do you want to indicate that patch $ 1 Do you want another file$File already exists; Delete it$PUT completed for $printer$console$Requires CP/M 3.0$CP/M 3 PUT Version 3.0 1 Disk write. 1 Disk read. 1 Disk is READ ONLY. 1 Disk I/O error. 1 Directory is password protected.Password, please. > 1 DTR ALWAYS TRUE 1 DISPLAY = 1 DEVTABBAUD: 1 DE = ADDRESS OF SOURCE/DESTINATION 1 DATE COM 1 D, @50FIDEMS 1 D, @30FIDEMS 1 Current patches for $ 1 Copyright (C) 1988 Locomotive Software Ltd 1 Copyright (C) 1985 Amstrad Consumer Electronics PLC 1 Cannot find last XFCB. 3Cannot re-format the directory with RSXs in memory. Unrecognized drive.Cannot select drive.! 1 CZMEIABDHSP 1 CP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH251082 1 CP/M RMAC ASSEM 1.1 1 CP/M MACRO ASSEM 2.0 1 CP/M 3 SAVE - Version 3.0$ 1 CP/M 3 PATCH - Version 3.0$ 1 COPYRIGHT 1982, DIGITAL RESEARCH151282 1 COPYRIGHT (C) 1977, DIGITAL RESEARCH 1 COPYRIGHT (C) 1977 DIGITAL RESEARCH 1 CON CON RDR PUN LST 1 COMPRLRSPSPROVLSYM!;>q*5: 1 COMPRL151282 1 COM file found and NULL option. 1 COLLECT = 1 CDSAPARAMS: 1 CARRY FALSE ZERO FALSE (=> ERROR, NO RETRY) 1 CARRY FALSE (=> NO MESSAGE) 1 C = TX ENCODED BAUD RATE 1 C = COUNTRY CODE 1 C = CHTrack-Info 1 C = COUNTRY CODE 1 Beginning hex address $ 1 Bad stop bits 1 Bad parity 1 Bad option 1 Bad on/off 1 Bad baud rate 1 BITS 2..7 = 0 1 BIT 1 <=> INTERRUPTS (IGNORED ON +3) 1 BIT 0 <=> HANDSHAKE 1 BC DE HL CORRUPT 1 BC = NUMBER OF BYTES TO MOVE 1 BACKTRACE: 1 B, @30FIDDLOGON - @10FIDDLOGON 1 B = RX ENCODED BAUD RATE 1 B = ERROR NUMBER 1 B = DEVICE NUMBER 1 AWAITCHAR: 1 AF CORRUPT 1 ADDR RELATIVE FREQUENCY, LARGEST VALUE = 1 ACopyright (c) 1980 Digital Research, v1.3 ! 1 ABORTED$NO SPACE$NO FILE: $CANNOT CLOSE$DISK READ ERROR: $DISK WRITE ERROR$Y 1 ABORTED$DISK READ ERROR$DISK WRITE ERROR$CANNOT CLOSE$DIRECTORY FULL$NO FILE: $ 1 ABCDEFGHIJKLMNOPDRIVE: Enter Drive: : 1 A1Track-Info 1 A = - SELECTOR (YES.. MINUS) 1 A = CP/M RETURN CODE 1 @80FIDEMS: 1 @70FIDEMS: 1 @50CDSAINIT: 1 @50CDSAINIT 1 @40CDSAINIT: 1 @40CDSAINIT 1 @30FIDDLOGON: 1 @30CDSAINIT: 1 @20FIDDLOGON: 1 @20FIDDLOGON 1 @20CDSAINIT: 1 @20CDSAINIT 1 @10FINDSECTOR: 1 @10FIDDLOGON: 1 @10FIDCOUTPUT: 1 @10FIDCOUTPUT 1 @10FIDCOSTATUS: 1 @10FIDCOSTATUS 1 @10FIDCISTATUS: 1 @10FIDCISTATUS 1 @10CDSAINIT: 1 @10CDSAINIT 1 @10CDSABAUD: 1 @10AWAITCHAR: 1 @10AWAITCHAR 1 ?OVLAY?OVLA0RELIRLIRLREL 1 ????????EMS 1 >Sw#>Yw#>Mw 1 >Cw#>Ow#>Mw 1 =$?P:-?]>*< 1 = 512 bytes 1 = 128 bytes 1 <*B4#"B4:D4 1 ;WE KNOW IT CANNOT BE NUMBERED 0 1 ;USART DATA CHANNEL 1 ;USART CONTROL CHANNEL 1 ;TX 8 BITS 1 ;THE CURRENT (HENCE LEGAL) BAUD RATE 1 ;TEMPORARY FILE DRIVE 1 ;SUCCESS MESSAGE 1 ;STORE TX &Track-Info 1 ;STORE PARITY & STOP BITS 1 ;STEP TENS 1 ;START OF RAMDISC AREA 1 ;SO ERROR IF NOT LOGICAL SECTOR 0 1 ;SIZE OF RAMDISC / 256 1 ;SET THE SPEED 1 ;SET FIRST BYTE 1 ;SET DTR + ENABLE TX & RX 1 ;SEND THE CONTROL BYTE 1 ;SEND CHARACTER 1 ;SAVE START OF AREA 1 ;RX 8 BITS 1 ;ROUNDING ETC 1 ;RETURN UNWANTED MEMORY 1 ;RESET.. AND STATE IS CERTAIN 1 ;RESET TO USE THE NEW SPEED 1 ;REQUEST STORE 1 ;RELEASE THE MAIN AREA 1 ;RELEASE AREA WHICH IS NOT 1K MULTIPLE 1 ;REJECT PROPOSED BAUDRATE & USE CURRENT 1 ;REDIRECT AUXOUT: 1 ;REDIRECT AUXIN: 1 ;RECORDS PER TRACK 1 ;RECORD UNITS 1 ;RECORD THIS ADDRESS 1 ;RECORD NEW BAUDRATE 1 ;RECORD INTO DPB 1 ;RAISE DTR IF NO DATA 1 ;PREFIX FOR IY INSTRUCTIONS 1 ;PREFIX FOR IX INSTRUCTIONS 1 ;POINT AT BAUD RATE IN THE DEVICE TABLE 1 ;PLUS3 CANNOT USE INTERRUPTS 1 ;PHYSICAL SECTOR SHIFT (log2(4)) 1 ;PHYSICAL SECTOR MASK (4 - 1) 1 ;PERHAPS SYNC2 1 ;PERHAPS SYNC1 1 ;PERHAPS MODE CONTROL 1 ;OUT (C), E 1 ;OUT (C), A 1 ;ONE SECTOR PER TRACK 1 ;NOW AWAIT CHARACTER ARRIVAL 1 ;NON-RECOVERABLE ERROR 1 ;NON-INTERRUPT, NON-HANDSHAKE 1 ;NO RESERVED TRACKS 1 ;NO PARITY 1 ;NO HASH TABLE 1 ;NO CHECKSUM VECTOR 1 ;NEED VALUES 1..16 1 ;NB CANNOT WRITE SCB+50H 1 ;MOVE INTO BITS 6&7 1 ;MOVE INTO BITS 2&3 1 ;MASK TO RANGE 1 ;MASK FOR RECEIVED CHARACTERS 1 ;LOOP TILL MASK COMPLETE 1 ;LOOP IF STILL POSITIVE 1 ;LOOP IF NOT READY 1 ;LOOP IF NO DATA 1 ;L = TX BITS, H = RX BITS 1 ;JUMPBLOCK 1 ;JUMP IF PARITY = NONE 1 ;JUMP IF OK 1 ;JUMP IF ODD PARITY 1 ;JUMP IF NON-INTERRUPT, HANDSHAKE (A=0) 1 ;JUMP IF NON-HANDSHAKE 1 ;JUMP IF NO FREE STORE 1 ;JUMP IF HANDSHAKE MODE 1 ;JUMP IF DROP DTR 1 ;JUMP IF COMMAND 1 ;JUMP IF 4800 BAUD 1 ;JUMP IF 4800 1 ;JUMP IF 300 (WE ASSUME 1-7 LINKAGE) 1 ;JUMP IF 1200 (OR INDEED 1200/75) 1 ;INITIALISE THE DPB 1 ;INITIALISE TENS 1 ;IN UNITS OF 256 1 ;IN + OUT + BAUD + SERIAL 1 ;IGNORE TX BAUDRATE 1 ;IGNORE ALL OTHER COMMANDS 1 ;HOOK IN CHARACTER DEVICE 1 ;HOOK IN A DISC DEVICE 1 ;HOOK DISC DEVICE 1 ;HOOK CHARACTER DEVICE 1 ;HL = START OF UNWANTED AREA 1 ;HL = START OF AREA 1 ;HL = RAMAREA + HL * 512 1 ;HL = ALLOCATION VECTOR SIZE IN BYTES 1 ;HANDSHAKE MODE 1 ;H = L = BAUDRATE FROM DEVICE TABLE 1 ;FETCH CURRENT STATE 1 ;FETCH CHARACTER 1 ;FETCH BAUDRATE 1 ;FAILURE MESSAGE 1 ;FAIL MESSAGE 1 ;FAIL IF 0K OR 1K RAMDISC 1 ;EXTENT MASK 1 ;EXIT IF NO CHARACTER 1 ;EXIT (+C) IF GOT ONE 1 ;EVEN PARITY 1 ;ERROR IF TRACK OUT OF RANGE 1 ;ERROR IF TRACK >= 256 1 ;ENABLE TX & RX, ERROR RESET 1 ;ENABLE TX & RX 1 ;ENABLE PARITY 1 ;ELSE X64 CLOCK 1 ;ELSE TRY COAXING 1 ;ELSE RAISE DTR 1 ;E = PARITY, D = STOP BITS 1 ;E = CHARACTER 1 ;DROP DTR AGAIN 1 ;DONT WRITE "SCB+26H" 1 ;DISCSIZE (/256) 1 ;DISC SIZE IN BLOCKS - 1 1 ;DIRECTORY SIZE IN ENTRIES - 1 1 ;DEVICE NAME 1 ;DE = REF SOURCE/DESTINATION 1 ;DE = HL + 1 1 ;DE = HL * 256 1 ;DE = DEVICE MASK 1 ;DE = DE .MASK. 003FFH 1 ;DE = ADDRESS OF DESTINATION 1 ;COPY OF DPB 1 ;COPY INTO SECTOR 1 ;COPY FROM SECTOR 1 ;CONSTRUCTED FROM DEVICE NUMBER 1 ;CONSTRUCT THE COMPLETE BYTE 1 ;CLEAR CARRY FOR FAILURE 1 ;CHECKSUM VECTOR SIZE IN BYTES +FIXED 1 ;CHARACTER DEVICE TABLE 1 ;CARRY TRUE IF TRANSMIT BUFFER EMPTY 1 ;CARRY FALSE ZERO FALSE 1 ;CARRY FALSE 1 ;CAN END ANYWHERE 1 ;CAN END ANYTrack-Info 1 ;C = TX BAUDRATE 1 ;BLOCK SHIFT (log2(8)) 1 ;BLOCK MOVE INSTRUCTION 1 ;BLOCK MASK (8 - 1) 1 ;BC = TOTAL SIZE - 1 1 ;BC = DE .MASK. 0FC00H 1 ;B = RX BAUDRATE 1 ;AUXOUT: ENTRY 1 ;ASSUME X16 CLOCK 1 ;AND ALL THE OTHERS 1 ;ALLOCATE THE NEXT AVAILABLE DISC 1 ;ALLOCATE MAX AREA OF MEMORY 1 ;ALL OTHER MODES SET DTR 1 ;ADDRESS OF JUMPBLOCK 1 ;ADDRESS IN DEVICE TABLE FOR BAUDRATE 1 ;ADD ONE BIT PER LOOP 1 ;A = TX BITS 1 ;A = STOP BITS 1 ;A = SIZE IN K (EXACT) 1 ;A = PARITY REQUEST 1 ;A = HIGHEST LEGAL TRACK NUMBER 1 ;A = BLOCKSIZE - 1 1 ;A = -A = SELECTOR 1 ;5..8 -> 0..3 1 ;1200 BAUD (* ASSUMED LEGAL AT EMS *) 1 ;1 STOP BIT 1 ;/16 => 8 BITS ALLOCATES 4K 1 ;+C => CHARACTER 1 ;+38: SET BAUD RATE 1 ;+35: FETCH PARAMETERS 1 ;+32: SET PARAMETERS 1 ;+ 18 : NO SPECIALS FOR MESSAGES 1 ;+ 15 : NO SPECIALS FOR MESSAGES 1 ; values for the RAM disc are calculated by assuming: 1 ; WRITE A 512 BYTE SECTOR 1 ; TRANSFER ADDRESS = HL * 512 + START OF RAM DISC AREA 1 ; THESE CAN VARY FROM FID TO FID ... THE ONES HERE ARE FOR THE STSERIAL 1 ; THE SERIAL PORT CAN BE OPERATED IN TWO MODES 1 ; TEST IF CHARACTER AVAILABLE FOR INPUT 1 ; SUPPORTS AN 8251 USART ON THE SPECTRUM +3 1 ; SUPPORTS A SMALL RAMDISC ON THE SPECTRUM +3 1 ; SUCCESS: SET THE TEMPORARY FILE DRIVE TO BE THE RAMDISC 1 ; SUCCESS MESSAGE 1 ; SET BOTH TX AND RX BAUDRATES 1 ; ROUTINES WHICH CAN BE ACCESSED BY .COM PROGRAMS WHICH USE FIND_FID 1 ; RETURN AN ERROR MESSAGE STRING (EASY, BECAUSE WE HAVE NONE) 1 ; RESET THE SERIAL DEVICE : WE DO NOT KNOW ITS STATE - ASSUME THE WORST 1 ; RECORD RAMDISC SIZE INTO MESSAGE 1 ; RECORD PARAMETERS 1 ; READ A 512 BYTE SECTOR 1 ; RAISE DTR UNLESS FOR NON-INTERRUPT HANDSHAKE MODE 1 ; RAISE DTR SIGNAL 1 ; PROGRAM SIMILAR TO THE STANDARD SERIAL CHANNEL'S "SETSIO" 1 ; OUTPUT THE NEXT CHARACTER 1 ; NON-INTERRUPT, NON-HANDSHAKE MODE 1 ; NON-INTERRUPT, HANDSHAKE MODE 1 ; NON-HANDSHAKE: TEST TX BUFFER EMPTY 1 ; MESSAGES 1 ; LOWER THE DTR SIGNAL 1 ; LOOK FOR A CHARACTER? 1 ; LOGON ON DISC, INITIALIZE DPB 1 ; INPUT NEXT CHARACTER 1 ; INITIALIZE THE RAMDISC TO 0E5H, IE: FRESHLY FORMATTED 1 ; INITIALIZE CHARACTER DEVICE ACCORDING TO DEVICE TABLE ENTRY 1 ; HOOK IN THE SERIAL PORT 1 ; HOOK IN THE RAMDISC AS THE NEXT FREE DISC NAME (USUALLY C:) 1 ; HIJACK THE AUX: DEVICE 1 ; HANDSHAKE: TEST "ALL SENT" AND DSR 1 ; HANDSHAKE MODE 1 ; HANDSHAKE : IS THERE A CHARACTER ALREADY THERE? 1 ; GET MAXIMUM LUMP OF MEMORY TO BE THE RAMDISC 1 ; GET DEVICE PARAMETERS 1 ; FLUSH INTERNAL BUFFERS (EASY, BECAUSE WE HAVE NONE) 1 ; FIND A 512 BYTE SECTOR 1 ; FETCH IT AND MASK IT TO THE EXPECTED NUMBER OF RX BITS 1 ; FAILURE MESSAGE 1 ; FAILURE EXITS - MAKE SURE WE RETURN ALL MEMORY WE HAVE ALLOCATED 1 ; CONSTRUCT MODE CONTROL : BITS 2&3 : TX BITS (HOPEFULLY >= RX BITS) 1 ; CONSTRUCT MODE CONTROL : BITS 0&1 : CLOCK RATE 1 ; CHARACTER DEVICE ENTRY 1 ; CHANGE SERIAL PORT PARAMETERS 1 ; CALCULATE THE RX DATA BITS MASK 1 ; BUILD BY: 1 ; BUILD BY 1 ; BITS 7&8 : STOP BITS 1 ; BITS 4&5 : PARITY 1 ; AWAIT CHARACTER FROM SERIAL PORT 1 ; ARE WE READY FOR OUTPUT? 1 ; =================== 1 ; "PRIVATE" JUMPBLOCK 1 :;>w*5:#"5: 1 :5<w:3<<23< 1 :5<<25<:6<<26< 1 :3<=23<:4<<24< 1 :2<w*0<##N#F 1 :'<<2'<:&<<2&< 1 :"i:"k:"m:"o:}2 1 9"q:2C:2D:2E:2R:! 1 8>Track-Info 1 8++"\<*\<^#V 1 6c*zw+"zw: 1 6H#6E#6X!e 1 654321WARNING: 1 654321RELIRLFATAL ERROR$ 1 654321CP/M 3 SID - Version 3.0$1 1 530 CLOSE #1 1 520 REM CLOSE THE FID FILE 1 510 PUT #1, 3 1 500 IF (OLDLOSUM = LOSUM) AND (OLDHISUM = HISUM) THEN PRINT "Checksum was correct" ELSE PRINT "Checksum was wrong" 1 490 MID$(RECORD$,18,1) = CHR$(HISUM) 1 480 MID$(RECORD$,17,1) = CHR$(LOSUM) 1 470 GET #1, 3 1 460 REM UPDATE THE CHECKSUM IN THE FID HEADER 1 440 LOSUM = LOSUM MOD 256 1 430 HISUM = (HISUM + (LOSUM \ 256)) MOD 256 1 410 LOSUM = LOSUM + ASC(MID$(RECORD$,I,1)) 1 400 FOR I = 1 TO ENDON 1 4!K4>x6 #= 1 390 IF (THISRECORD = LASTRECORD) THEN ENDON = USEDINLAST 1 380 GET #1, THISRECORD 1 370 PRINT LASTRECORD-THISRECORD;CHR$(13); 1 360 FOR THISRECORD = 1 TO LASTRECORD 1 350 ENDON = 128 1 340 HISUM = 0 1 330 LOSUM = - OLDLOSUM - OLDHISUM 1 320 REM CALCULATE THE CHECKSUM 1 310 OLDHISUM = ASC(MID$(RECORD$,18,1)) 1 300 OLDLOSUM = ASC(MID$(RECORD$,17,1)) 1 2y3*z3^#V#"z3 1 2v92x92w9!t96X 1 2f/2e/2[02 1 2^=*i=#"i= 1 2Rz2Vz2Wz" 1 2N/!P/4!}0 1 2D*2*522521528*:\ 1 2;C2PC2SC<2KC 1 2:42942(52 1 290 GET #1, 3 ' Bytes 256..287 are FID header 1 28>:7><27> 1 280 USEDINLAST = LENGTH - (LASTRECORD - 1) * 128 1 270 LASTRECORD = (LENGTH + 127) \ 128 1 261251:!12:1::1!51 1 260 LENGTH = 256 + PROGLENGTH + (PROGLENGTH + 7) \ 8 1 250 PROGLENGTH = ASC(MID$(RECORD$,2,1)) + 256 * ASC(MID$(RECORD$,3,1)) 1 240 GET #1, 1 ' Bytes 0..255 are PRL header 1 230 REM READ INFORMATION FROM THE PRL HEADER AND FID HEADER 1 221:71<261!514 1 220 FIELD #1, 128 AS RECORD$ 1 21{<22{23{ 1 21{:3{O:.{ 1 210 OPEN "R", #1, F$ 1 2-3!-34*%3++ 1 2+6L#6I#6B# 1 190 IF FIND$(F$) = "" THEN PRINT "There is no such file!" : PRINT : GOTO 180 1 180 INPUT "Which file do you want to checksum? ",F$ 1 160 REM OPEN THE FID FILE 1 140 PRINT " ****************************" 1 130 PRINT " ** FID Checksum Program **" 1 120 PRINT " ****************************" 1 110 REM Copyright 1988 Locomotive Software Ltd 1 0!s*6S#6Y#6M# 1 /wTrack-Info 1 .s#r*V0##~ 1 .XRF write error 1 .XRF close error 1 .INITIAL = 1 .G*V0##"X0: 1 .DISPLAY = 1 .COLLECT = 1 ..*B*#"B*+ 1 --------------------------------------------------- 1 ,y!<*w#w#w#w#> 1 ,D,D,N-P-L-N-P-G-@,I-P/O/Q/G-I-D, 1 *|3"#5s#r+ 1 *z3s#r*#5##~ 1 *u:"w:*E<#"E< 1 *u:"Y<*W<"u: 1 *736@*)3#")3 1 *0<##N#F*.< 1 *.:#".:*.:N 1 **<##"*<!'<6 1 *'3#"'3*#3 1 *#5"|3#"%5 1 * I/O Stack Overflow 1 )15:?DIQVNOT~ECHO~RAW~FILTERED~SYSTEM~PROGRAM 1 (HIGH VERSION) + '0', '.', (LOW VERSION) + '0' 1 (HIGH VERSION) + '0', '.', (LOW VERSION) + '0' 1 (Copyright (c) 1980 Digital Research V1.3 1 (*ZC#"ZC!ZC 1 ()*+,-/ABCDEHLMDBDIDSDWEIEQGEGTIFINLELTNEORSPACIADCADDADIANAANDANICMACMCCMPCPIDAADADDCRDCXENDEQUHLTINRINXIRPJMPLDALOWLXIMODMOVMVINOPNOTNULORAORGORIOUTPOPPSWRALRARRETRLCRRCRSTSBBSBISETSHLSHRSTASTCSUBSUIXORXRAXRIASEGCALLCSEGDSEGELSEENDMHIGHIRPCLDAXLHLDNAMEPAGEPCHLPUSHREPTSHLDSPHLSTAXXCHGXTHLENDIFEXITMEXTRNLOCALMACROSTKLNTITLEINPAGEMACLIBPUBLIC 1 ()*+,-/ABCDEHLMDBDIDSDWEIEQGEGTIFINLELTNEORSPACIADCADDADIANAANDANICMACMCCMPCPIDAADADDCRDCXENDEQUHLTINRINXIRPJMPLDALOWLXIMODMOVMVINOPNOTNULORAORGORIOUTPOPPSWRALRARRETRLCRRCRSTSBBSBISETSHLSHRSTASTCSUBSUIXORXRAXRIASEGCALLCSEGDSEGELSEENDMHIGHIRPCLDAXLHLDNAMEPAGEPCHLPUSHREPTSHLDSPHLSTAXXCHGXTHLENDIFEXITMEXTRNLOCALMACROSTKLNTITLECOMMONINPAGEMACLIBPUBLIC 1 ('*.>DM*,> 1 'SERIAL.ASM - AN EXAMPLE FID FOR A SERIAL PORT' 1 'SERIAL v' 1 'SERIAL not installed', 0DH, 0AH, 0FFH 1 'RAMDISC.ASM - AN EXAMPLE FID FOR A SMALL RAM DISC' 1 'RAMDISC v' 1 'RAMDISC not installed', 0DH, 0AH, 0FFH 1 &W&]&`&f&o&u&{& 1 &6S#6Y#6M# 1 &6L#6I#6B# 1 &*]|"o|!o| 1 %w#w#w#w#w#w#> 1 %SYMBOL TABLE OVERFLOW 1 %60#60#60#> 1 %2]02e02d02g02 1 $SERIAL not found 1 $Put console output to a file$ 1 $PRINTER READY 1 $OUTPUT~TO~FILE~CONSOLE~CONOUT:~AUXILIARY~AUXOUT:~END~CON:~AUX:~LIST~LST:~PRINTER~INPUT 1 $Get console input from a file 1 $Enter file: $1 1 $ERROR: Insufficient Memory 1 $ERROR: Auxiliary device redirection not implemented 1 $ABSOLUTE $CODE SIZE $DATA SIZE $COMMON SIZE $USE FACTOR $! 1 $01/04/83?MEMRY$MEMRY 1 $*#5^#V*S"s#r* 1 $ Format Overflow 1 $ + 0FE09H 1 $ + 0FE08H 1 $ + 0FE05H 1 $ + 0FE04H 1 #FF => NON-INTERRUPTS, HANDSHAKE 1 #< Conversion 1 #83 => RAISE RTS 1 #82 => DROP RTS 1 #81 RAISE DTR 1 #81 => RAISE DTR 1 #80 DROP DTR 1 #80 => DROP DTR 1 #00 => NON-INTERRUPTS, NON-HANDSHAKE 1 #*4>"d:!3>6 1 #).6=GNRW\`enu| 1 ##~<2x3G*#5###"%5:w3 1 ###^#V#N#Fx 1 "y:"{:"}:" 1 "m9}2o9!z96 1 "i}2h}x2k} 1 "i:"k:"m:"o: 1 "B*!(5~2A* 1 "5:}28>27> 1 "-A" IN EFFECT, ADDRESS BACKTRACE 1 "+{*9C~2/{:PC 1 "${*"{~*&{w*${ 1 ""{!${"&{! 1 ""6**6#"*6 1 !}=44*`:"d: 1 !z$q!h#6?! 1 !u>p+q*t>DM 1 !s>s+p+q*q>DM 1 !p>p+q*o>"[> 1 !p$p+q*o$~ 1 !n>s+p+q*[> 1 !k=s+p+q!^=6 1 !b=q*d:##:b= 1 !V>p+q*U>|O 1 !Track-Info 1 !G>p+q*F>"H>*C>& 1 !Copyright (c) 1980 Digital Research, v1.3 ! 1 !B14:A1!!1 1 !A*qC))))) 1 !?>p+q*>>}O 1 !8<p+q*u:# 1 !8<p+q!5<6 1 !6<p+q*5<"0<^#V 1 !4<p+q*3<}O 1 !3*60#60#60#> 1 !2<q*0<##N#F*.< 1 !)>s+p+q:)> 1 Track-Info 1 Handshake$ 1 Free Space Exhausted 1 Copyright (c) 1982, Digital Research 11/02/82 1 Conversion 1 COPYRIGHT (C) 1980 DIGITAL RESEARCH 1 COPYRIGHT (C) 1977 DIGITAL RESEARCH 1 1 Bits $rx $ Bits tx $ 1 =.:<>_[],()! 1 =.:<>[],()?$! <q: < 1 5!NC4!KC5 1 151282 COPYR '82 DRI gggggggggggggggggggggggggggggggg 1 151282 COPYR '82 DRI gggggggggggggggggggggggggggggg 1 01BF C9 1 01BE 37 1 01BD C0 1 01BB EE85 1 01B9 E685 1 01B7 ED78 1 *y:"X:*]:& 1 !"#$%&'()*+,-. 1 has been installed$ already exists for $ 1 exist for $ 1 COMHEXRSX 1 when using GET or SUBMIT. 1 @10FIDCOSTATUS: 1 ; 1 1 1 1